package com.cmpe451.nutty.dao;

import java.util.List;

import com.cmpe451.nutty.model.AppUrl;
import com.cmpe451.nutty.model.ExampleModel;
import com.cmpe451.nutty.model.Levels;
import com.cmpe451.nutty.model.Report;
import com.cmpe451.nutty.model.Role;
import com.cmpe451.nutty.model.User;

public interface UserDao {
    public User findUserById(Long userId);

    public User findUserByEmail(String email);

    public User findUserByUsername(String username);

    public void saveUser(User user);

    public void updateUser(User user);

    public List<Role> findUserRoles(Long userId);

    public List<AppUrl> findAllSecureUrls();

    public List<User> findUsers(int page, int max, String orderBy, String orderType);

	public ExampleModel findModelByName(String username);

	public Role findRoleByName(String string);
	
	public Levels findLevelByPoint(Long point);

	public List<User> getUsersBySearch(String q);

	public void saveReport(Report report);

	public Report checkReported(String username, String username2);

	public int getReportCount(String username);

	public List<Report> getReportedOnes(String username2);

	public Levels getTitle(Long levelPoint);

	public void sendRecoveryMail(String username, String email);

}
